package com.ll.utils;

import java.awt.Color;

/**
 * 颜色处理类，负责将颜色与html页面的色值进行互相转换
 * @author sunhuaili
 *
 */
public class CommonColorUtils {
	/**
	 * 
	 * @param color html中颜色的色值，必须为标准的六位
	 * @param alpha 透明度，为小数
	 * @return jdk中存储的颜色的色值
	 */
	public static final int parseToJDKColorValue(String color,float alpha){
		if(color == null){
			throw new IllegalArgumentException("颜色色值不能为null");
		}
		if(color.length() != 6){
			throw new IllegalArgumentException("颜色色值不正确，必须为标准的六位色值");
		}
		String R = color.substring(0,2);
		String G = color.substring(2,4);
		String B = color.substring(4,6);
		
		Color jdkColor = new Color(Integer.valueOf(R, 16),Integer.valueOf(G, 16),Integer.valueOf(B, 16),Math.round(alpha*255));
		return jdkColor.getRGB();
	}
	/**
	 * 将HTML中的颜色值，转换成JDK所能识别的颜色值
	 * @param color HTML的色值
	 * @return 转换后的色值
	 */
	public static final int parseToJDKColorValue(String color){
		return parseToJDKColorValue(color,1);
	}
	/**
	 * 将JDK所能识别的色值，转换成HTML的色值
	 * @param colorValue JDK的色值 
	 * @return HTML色值
	 */
	public static final String parseToHTMLColorValue(int colorValue){
		Color color = new Color(colorValue);
		String R = Integer.toHexString(color.getRed() & 0xFF);
		String G = Integer.toHexString(color.getGreen() & 0xFF);
		String B = Integer.toHexString(color.getBlue() & 0xFF);
		String result = handleStringColor(R)+handleStringColor(G)+handleStringColor(B);
		return result.toUpperCase();
	}
	/**
	 * HTML中透明度的值为0~1之间的一个小数，当为0的时候，表示透明，为1的时候表示不透明
	 * 该方法将JDK的色值中的透明度提取出来，并将其转换成HTML所能识别的透明度值
	 * @param colorValue 色值
	 * @return html所能识别的透明度值，
	 */
	public static final float parseToHTMLAlpha(int colorValue){
		Color color = new Color(colorValue,true);
		float result = (float)Math.round(color.getAlpha() * 100.0 / 255)/100;
		return result;
	}
	
	private static String handleStringColor(String color){
		if(color.length() == 2)
			return color;
		return "0"+color;
	}
	
	

}
